package com.ruoyi.oa.domain.bo;

import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 差旅费业务对象 oa_finance_travel
 *
 * @author wangxq
 * @date 2023-05-18
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class OaFinanceTravelBo extends BaseEntity {

    /**
     * 主键
     */
    private String id;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 报销日期
     */
    @NotNull(message = "报销日期不能为空", groups = { AddGroup.class, EditGroup.class })
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm")
    private Date reimbursementDate;

    /**
     * 编号
     */
    private String number;

    /**
     * 姓名
     */
    @NotBlank(message = "姓名不能为空", groups = { AddGroup.class, EditGroup.class })
    private String name;

    /**
     * 部门
     */
    @NotBlank(message = "部门不能为空", groups = { AddGroup.class, EditGroup.class })
    private String dept;

    /**
     * 出差事由
     */
    @NotBlank(message = "出差事由不能为空", groups = { AddGroup.class, EditGroup.class })
    private String businessReason;

    /**
     * 费用类型
     */
    @NotBlank(message = "费用类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private String costType;

    /**
     * 开户行名称
     */
    @NotBlank(message = "开户行名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String nameBank;

    /**
     * 卡号
     */
    @NotBlank(message = "卡号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String cardNumber;

    /**
     * 附件张数
     */
    @NotBlank(message = "附件张数不能为空", groups = { AddGroup.class, EditGroup.class })
    private String attachmentNumbers;

    /**
     * 申请列表
     */
    @NotBlank(message = "申请列表不能为空", groups = { AddGroup.class, EditGroup.class })
    private String applyList;

    /**
     * 报销总额
     */
    @NotBlank(message = "报销总额不能为空", groups = { AddGroup.class, EditGroup.class })
    private String reimbursementTotal;

    /**
     * 小写
     */
    @NotNull(message = "小写不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal smallLetter;

    /**
     * 预支金额
     */
    @NotNull(message = "预支金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal advanceAmount;

    /**
     * 应报销金额
     */
    @NotNull(message = "应报销金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal reimbursableAmount;

    /**
     * 应退回金额
     */
    @NotNull(message = "应退回金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal refundAmount;

    /**
     * 应付金额
     */
    @NotNull(message = "应付金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal payableAmount;

    /**
     * oss集合
     */
    private String attachment;



    /**
     * 提交时间范围
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    private List<Date> submitTimeList;

    /**
    * 提交时间 终
    */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date submitStartDate;

    /**
     * 提交时间起
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date submitEndDate;
    /**
     * 流程状态
     */
    private String status;

    /**
     * 创建
     */
    private String createUser;
}
